home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume89 / aplictns / plplot.1 < prev    next >
Internet Message Format  |  1989-04-25  |  52KB

  1. Path: xanth!ames!oliveb!sun!rishathra!page
  2. From: page%rishathra@Sun.COM (Bob Page)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v89i086:  plplot - scientific plotting library, Part01/07
  5. Message-ID: <100935@sun.Eng.Sun.COM>
  6. Date: 25 Apr 89 05:35:25 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 1239
  9. Approved: page@sun.com
  10.  
  11. Submitted-by: amr@dukee.egr.duke.edu (Tony Richardson)
  12. Posting-number: Volume 89, Issue 86
  13. Archive-name: applications/plplot.1
  14.  
  15. PLPLOT is a library of C functions useful for scientific plotting on
  16. the Amiga personal computer.  Contour plotting, three dimensional
  17. plotting, axis redefinition, log-log plotting and multiple subpages
  18. are a few of PLPLOT's features.  The plots can be displayed on your
  19. monitor or a graphics file can be created which can be sent to a hard
  20. copy device.
  21.  
  22. # This is a shell archive.
  23. # Remove anything above and including the cut line.
  24. # Then run the rest of the file through 'sh'.
  25. # Unpacked files will be owned by you and have default permissions.
  26. #----cut here-----cut here-----cut here-----cut here----#
  27. #!/bin/sh
  28. # shar: SHell ARchive
  29. # Run the following text through 'sh' to create:
  30. #    Amiga.c
  31. #    README
  32. #    UpdateLib
  33. #    declare.h
  34. #    define.c
  35. #    fatal.c
  36. #    fcnvrt.c
  37. #    font01.c
  38. # This is archive 1 of a 7-part kit.
  39. # This archive created: Thu Apr 20 13:46:55 1989
  40. echo "extracting Amiga.c"
  41. sed 's/^X//' << \SHAR_EOF > Amiga.c
  42. X#include "plplot.h"
  43. X#include <dos.h>
  44. X#include <stdio.h>
  45. X#include <exec/types.h>
  46. X#include <exec/ports.h>
  47. X#include <graphics/display.h>
  48. X#include <intuition/intuition.h>
  49. X#include <intuition/intuitionbase.h>
  50. X#include <intuition/screens.h>
  51. X
  52. Xstruct NewScreen NewScreen = {
  53. X   0,        /* LeftEdge Position */
  54. X   0,        /* TopEdge */
  55. X   640,        /* Width (high-res) */
  56. X   400,        /* Height (interlace) */
  57. X   1,        /* Depth (1 color) */
  58. X   0,1,        /* DetailPen and BlockPen */
  59. X   HIRES|INTERLACE,
  60. X   CUSTOMSCREEN,
  61. X   NULL,        /* Use default font */
  62. X   NULL,        /* Don't want a title */
  63. X   NULL,        /* Gadgets?? */
  64. X   NULL        /* No CustomBitMap */
  65. X};
  66. X    
  67. Xstruct NewWindow NewWindow = {
  68. X   0,0,640,400,
  69. X   -1,-1,
  70. X   MENUPICK|VANILLAKEY,
  71. X   SMART_REFRESH|BACKDROP|BORDERLESS|ACTIVATE,
  72. X   NULL,    /* Window Gadget Pointer */
  73. X   NULL,    /* Checkmark image */
  74. X   NULL,    /* No Title */
  75. X   NULL,    /* My Screen Pointer (this is set below) */
  76. X   NULL, /* Not a SuperBitMap */
  77. X   0,0,0,0,
  78. X   CUSTOMSCREEN
  79. X};
  80. X
  81. Xstruct IntuiText IText[] = {
  82. X   { 0, 1, JAM1, 0, 0, NULL, "Screen to Back" },
  83. X   { 0, 1, JAM1, 0, 0, NULL, "Clear Screen" },
  84. X   { 0, 1, JAM1, 0, 0, NULL, "Close Screen" },
  85. X   { 0, 1, JAM1, 0, 0, NULL, "Interrupt  <CTRL-C>"},
  86. X   { 0, 1, JAM1, 0, 0, NULL, "Continue   <Return>"}
  87. X};
  88. X
  89. Xstruct MenuItem MenuItem[] = {
  90. X   {
  91. X      &MenuItem[1],
  92. X      0, 0, (140 + COMMWIDTH), 9,
  93. X      ITEMTEXT | COMMSEQ | ITEMENABLED | HIGHCOMP,
  94. X      0,
  95. X      (APTR)&IText[0],
  96. X      NULL,
  97. X      'F',
  98. X      NULL,
  99. X      NULL
  100. X   },
  101. X   {
  102. X      &MenuItem[2],
  103. X      0, 9, (140 + COMMWIDTH), 9,
  104. X      ITEMTEXT | COMMSEQ | HIGHCOMP,
  105. X      0,
  106. X      (APTR)&IText[1],
  107. X      NULL,
  108. X      'C',
  109. X      NULL,
  110. X      NULL
  111. X   },
  112. X   {
  113. X      NULL,
  114. X      0, 18, (140 + COMMWIDTH), 9,
  115. X      ITEMTEXT | COMMSEQ | HIGHCOMP,
  116. X      0,
  117. X      (APTR)&IText[2],
  118. X      NULL,
  119. X      'Q',
  120. X      NULL,
  121. X      NULL
  122. X   },
  123. X   {
  124. X      &MenuItem[4],
  125. X      0, 0, (140 + COMMWIDTH), 9,
  126. X      ITEMTEXT | ITEMENABLED | HIGHCOMP,
  127. X      0,
  128. X      (APTR)&IText[3],
  129. X      NULL,
  130. X      NULL,
  131. X      NULL,
  132. X      NULL
  133. X   },
  134. X   {
  135. X      NULL,
  136. X      0, 9, (140 + COMMWIDTH), 9,
  137. X      ITEMTEXT | HIGHCOMP,
  138. X      0,
  139. X      (APTR)&IText[4],
  140. X      NULL,
  141. X      NULL,
  142. X      NULL,
  143. X      NULL
  144. X   }
  145. X};
  146. X    
  147. Xstruct Menu Menu[] = {
  148. X   {
  149. X      &Menu[1],
  150. X      0, 0, 140, 0,
  151. X      MENUENABLED,
  152. X      "Screen Control",
  153. X      &MenuItem[0]
  154. X   },        
  155. X   {
  156. X      NULL,
  157. X      140, 0, 140, 0,
  158. X      MENUENABLED,
  159. X      "Graphics Control",
  160. X      &MenuItem[3]
  161. X   }
  162. X};
  163. X
  164. Xextern long IntuitionBase;
  165. Xextern long GfxBase;
  166. Xstatic struct Screen *Screen;
  167. Xstatic struct Window *Window;
  168. Xstatic struct Border Border;
  169. Xstatic short xy[4];
  170. X
  171. X/* Open Borderless Full Screen Window for Drawing */
  172. Xvoid amiini()
  173. X{
  174. X   LONG OpenLibrary(), OpenScreen(), OpenWindow();
  175. X
  176. X   IntuitionBase = OpenLibrary("intuition.library",0);
  177. X   if(IntuitionBase == NULL) {
  178. X      printf("Couldn't open intuition library");
  179. X      exit(1);
  180. X   }
  181. X    
  182. X   GfxBase = OpenLibrary("graphics.library",0);
  183. X   if(GfxBase == NULL) {
  184. X      printf("Couldn't open graphics library");
  185. X      exit(1);
  186. X   }
  187. X    
  188. X   if((Screen = (struct Screen *)OpenScreen(&NewScreen)) == NULL) {
  189. X      printf("Couldn't open custom screen");
  190. X      exit(1);
  191. X   }
  192. X    
  193. X   ShowTitle(Screen,FALSE);
  194. X
  195. X   NewWindow.Screen = Screen;    /* Pointer to CustomScreen */
  196. X    
  197. X   if((Window = (struct Window *)OpenWindow(&NewWindow)) == NULL) {
  198. X      printf("Couldn't open window.\n");
  199. X      exit(1);
  200. X   }
  201. X    
  202. X   Border.LeftEdge = 0;
  203. X   Border.TopEdge = 0;
  204. X   Border.FrontPen = 1;
  205. X   Border.BackPen = 0;
  206. X   Border.DrawMode = JAM1;
  207. X   Border.Count = 2;
  208. X   Border.NextBorder = NULL;
  209. X   Border.XY = xy;
  210. X    
  211. X   SetMenuStrip(Window,Menu);
  212. X}
  213. X
  214. Xvoid amitex()
  215. X{
  216. X   /* I don't have a text mode on the custom screen */
  217. X}
  218. X
  219. Xvoid amigra()
  220. X{
  221. X}
  222. X
  223. Xvoid amicol(color)
  224. Xint color;
  225. X{
  226. X   /* No color support at present -- maybe in the next release */
  227. X}
  228. X
  229. X/* Clear the screen */
  230. Xvoid amiclr()
  231. X{
  232. X   SetRast(Window->RPort,0);
  233. X}        
  234. X
  235. X/* Draw the line.  Also check for interrupts. */
  236. Xvoid amilin(x1,y1,x2,y2)
  237. Xint x1, y1, x2, y2;
  238. X{
  239. X   int ItemNumber, MenuNumber;
  240. X   ULONG class;
  241. X   USHORT code, qualifier;
  242. X   struct IntuiMessage *message;
  243. X   struct MenuItem *Item, *ItemAddress();
  244. X    struct Message *GetMsg();
  245. X   void beepw();
  246. X
  247. X   xy[0] = x1;
  248. X   xy[1] = 399-y1;
  249. X   xy[2] = x2;
  250. X   xy[3] = 399-y2;
  251. X    
  252. X   if((xy[0] == xy[2]) && (xy[1] == xy[3]))
  253. X      WritePixel(Window->RPort,xy[0],xy[1]);
  254. X   else
  255. X      DrawBorder(Window->RPort,&Border,0,0);
  256. X    
  257. X   /* Check for user abort via CTRL-C or menu ABORT selection */
  258. X   /* and also Screen to Back Selection */
  259. X   /* All other messages are replied to but ignored. */
  260. X   while((message = (struct IntuiMessage *)
  261. X                     GetMsg(Window->UserPort))!=NULL) {
  262. X      class = message->Class;
  263. X      code = message->Code;
  264. X      qualifier = message->Qualifier;
  265. X      ReplyMsg(message);
  266. X      if(class == VANILLAKEY) {
  267. X         if(code == 3)
  268. X            beepw();
  269. X      }
  270. X      else if(class == MENUPICK) {
  271. X         while (code != MENUNULL) {
  272. X               Item = ItemAddress(Menu,code);
  273. X            MenuNumber = MENUNUM(code);
  274. X            ItemNumber = ITEMNUM(code);
  275. X            if((MenuNumber == 0) && (ItemNumber == 0))
  276. X               ScreenToBack(Screen);
  277. X            else if((MenuNumber == 1) && (ItemNumber == 0))
  278. X               beepw();
  279. X            code = Item->NextSelect;
  280. X         }
  281. X      }
  282. X   }
  283. X}
  284. X
  285. Xvoid amitid()
  286. X{
  287. X   ClearMenuStrip(Window);
  288. X   CloseWindow(Window);
  289. X   CloseScreen(Screen);
  290. X}
  291. X
  292. Xvoid beepw()
  293. X{
  294. X   int ItemNumber, MenuNumber;
  295. X   ULONG class;
  296. X   USHORT code, qualifier;
  297. X   struct IntuiMessage *message;
  298. X   struct MenuItem *Item, *ItemAddress();
  299. X    struct Message *GetMsg();
  300. X
  301. X   OnMenu(Window,SHIFTMENU(0)+SHIFTITEM(1));
  302. X   OnMenu(Window,SHIFTMENU(0)+SHIFTITEM(2));
  303. X   OnMenu(Window,SHIFTMENU(1)+SHIFTITEM(1));
  304. X   OffMenu(Window,SHIFTMENU(1)+SHIFTITEM(0));
  305. X   for(;;) {
  306. X      Wait(1L << Window->UserPort->mp_SigBit);
  307. X      while((message = (struct IntuiMessage *)
  308. X                        GetMsg(Window->UserPort))!=NULL) {
  309. X         class = message->Class;
  310. X         code = message->Code;
  311. X         qualifier = message->Qualifier;
  312. X         ReplyMsg(message);
  313. X         if(class == VANILLAKEY) {
  314. X            if(code == 13) {
  315. X               OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(1));
  316. X               OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(2));
  317. X               OffMenu(Window,SHIFTMENU(1)+SHIFTITEM(1));
  318. X               OnMenu(Window,SHIFTMENU(1)+SHIFTITEM(0));
  319. X               return;
  320. X            }
  321. X         }
  322. X         else if(class == MENUPICK) {
  323. X            while (code != MENUNULL) {
  324. X               Item = ItemAddress(Menu,code);
  325. X               MenuNumber = MENUNUM(code);
  326. X               ItemNumber = ITEMNUM(code);
  327. X               if(MenuNumber == 0) {
  328. X                  if(ItemNumber == 0)
  329. X                     ScreenToBack(Screen);
  330. X                  else if(ItemNumber == 1)
  331. X                     SetRast(Window->RPort,0);
  332. X                  else if(ItemNumber == 2) {
  333. X                     ClearMenuStrip(Window);
  334. X                     CloseWindow(Window);
  335. X                     CloseScreen(Screen);
  336. X                     goto AllDone;
  337. X                  }
  338. X               }
  339. X               else if(MenuNumber == 1) {
  340. X                  if (ItemNumber == 1) {
  341. X                     OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(1));
  342. X                     OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(2));
  343. X                     OffMenu(Window,SHIFTMENU(1)+SHIFTITEM(1));
  344. X                     OnMenu(Window,SHIFTMENU(1)+SHIFTITEM(0));
  345. X                     return;
  346. X                  }
  347. X               }
  348. X               code = Item->NextSelect;
  349. X            }
  350. X         }
  351. X      }
  352. X   }
  353. X
  354. XAllDone:
  355. X   plend();
  356. X   exit(1);
  357. X}
  358. X
  359. X
  360. SHAR_EOF
  361. echo "extracting README"
  362. sed 's/^X//' << \SHAR_EOF > README
  363. XPLPLOT is a library of C functions useful for scientific plotting on the 
  364. XAmiga personal  computer.  The  library  is  Lattice C  compatible.  For 
  365. Xthose of you with  another compiler or who  want to modify the code  the 
  366. Xsource is provided in directory src.
  367. X
  368. XContour plotting, three dimensional plotting, axis redefinition, log-log 
  369. Xplotting  and  multiple  subpages are a few of  PLPLOT's  features.  The 
  370. Xplots can be displayed on your monitor or a graphics file can be created
  371. Xwhich can be sent to a hard copy device.
  372. X
  373. XTo see some of the features of this package I suggest you go to examples 
  374. Xdirectory, READ THE README FILE THERE, and  then  compile and run one of 
  375. Xthe example programs.
  376. X
  377. XThe documentation is in the docs  directory  and is written in LaTeX.  I 
  378. Xapologize to those who don't  have  AmigaTeX or easy  access to  TeX  on  
  379. Xanother machine.
  380. X
  381. XThis is Version 1.00 of PLPLOT for the Amiga.  I had hoped to add a few
  382. Xmore features to the package before releasing, but  this work seems  to
  383. Xhave taken a back seat to work on my dissertation at present.  The wish 
  384. Xlist includes:
  385. X
  386. X(1) Color support for the Amiga screen driver.  I have  written drivers
  387. X    for a few hard copy devices  that do  provide  color support and it
  388. X    would be pretty easy to do on the Amiga. I don't have a need for it
  389. X    though and it does require more memory.
  390. X
  391. X(2) Device independence.  I would like to have PLPLOT produce a  device
  392. X    independent file and then have  separate drivers that use this file
  393. X    to generate  hard  copy.  Presently  new drivers must be integrated
  394. X    into the package.  This would take a little time to  accomplish and
  395. X    I don't see myself doing it in the near future.
  396. X
  397. XThis is FREEWARE.  It's my way of saying thank  you to those people who
  398. Xhave  written  freeware  for the  Amiga  in  the  past.  Feel  free  to 
  399. Xredistribute this package to anyone who  wants  it.  I do ask that only  
  400. Xthis version  (unaltered)  be  distributed  and  that  the  package  be
  401. Xdistributed in its entirety (including the documentation).
  402. X
  403. XLet me know if you have any comments, find  any bugs, or are willing to
  404. Xwork on translating the package for use with another compiler. I prefer 
  405. Xbeing contacted by mail, either electronic or US.
  406. X
  407. XTony Richardson
  408. X
  409. Xemail    amr@dukee.egr.duke.edu
  410. X
  411. XUS-Mail  Tony Richardson
  412. X         Duke University
  413. X         Dept. of Elect. Eng.
  414. X         Durham, N.C. 27706
  415. X
  416. Xphone    919-684-3123 (work)   919-286-7101 (home)
  417. X
  418. SHAR_EOF
  419. echo "extracting UpdateLib"
  420. sed 's/^X//' << \SHAR_EOF > UpdateLib
  421. Xlist >ram:plname ram:pltemp lformat="%s%s"
  422. Xoml lib/plplot.lib r @ram:plname
  423. Xdelete ram:plname quiet
  424. Xdelete ram:pltemp all quiet
  425. X
  426. SHAR_EOF
  427. echo "extracting declare.h"
  428. sed 's/^X//' << \SHAR_EOF > declare.h
  429. X/*
  430. X* Global variables for C plotting package
  431. X*
  432. X* device  :  Graphics device number
  433. X* termin  :  Zero for noninteractive device, non-zero for terminal
  434. X* graphx  :  Zero if currently in text mode, non-zero for graphics mode
  435. X* currx   :  Physical x-coordinate of current point
  436. X* curry   :  Physical y-coordinate of current point
  437. X* vpp...  :  Viewport boundaries in physical coordinates
  438. X* spp...  :  Subpage  boundaries in physical coordinates
  439. X* clp...  :  Clip     boundaries in physical coordinates
  440. X* phy...  :  Physical device limits in physical coordinates
  441. X* nsub.   :  Number of subpages on physical device
  442. X* cursub  :  Current subpage
  443. X* um.     :  Number of micrometres in a pixel
  444. X* font    :  Current default font
  445. X* colour  :  Current default colour
  446. X* mark    :  Array of mark lengths in micrometres for broken lines
  447. X* space   :  Array of space lengths in micrometres for broken lines
  448. X* nms     :  Number of elements for current broken line style
  449. X* timecnt :  Timer for broken lines
  450. X* alarm   :  Alarm indicating change of broken line status
  451. X* pendn   :  Flag indicating if pen is up or down
  452. X* curel   :  Current element within broken line
  453. X* level   :  Initialization level
  454. X*
  455. X* spd...  :  Subpage  boundaries in normalized device coordinates
  456. X* vpd...  :  Viewport boundaries in normalized device coordinates
  457. X* vpw...  :  Viewport boundaries in world coordinates
  458. X* .pmm    :  Number of pixels to a millimetre
  459. X* wp....  :  Transformation variables for world  to physical conversion
  460. X* dp....  :  Transformation variables for device to physical conversion
  461. X* mp....  :  Transformation variables for millimetres from bottom left
  462. X*             hand corner to physical coordinates
  463. X* wm....  :  Transformation variables for world coordinates to mm
  464. X* chr...  :  Character default height and current (scaled) height
  465. X* sym...  :  Symbol    default height and current (scaled) height
  466. X* maj...  :  Major tick default height and current (scaled) height
  467. X* min...  :  Minor tick default height and current (scaled) height
  468. X* base3.  :  World coordinate size of base for 3-d plot
  469. X* basec.  :  Position of centre of base for 3-d plot
  470. X* dom...  :  Minimum and maximum values for domain
  471. X* zzscl   :  Vertical (z) scale for 3-d plot
  472. X* ran..   :  Minimum and maximum z values for 3-d plot
  473. X* c..     :  Coordinate transformation from 3-d to 2-d
  474. X*/
  475. X
  476. Xextern int device, termin, graphx;
  477. Xextern int currx,  curry;
  478. Xextern int vppxmi, vppxma, vppymi, vppyma;
  479. Xextern int sppxmi, sppxma, sppymi, sppyma;
  480. Xextern int clpxmi, clpxma, clpymi, clpyma;
  481. Xextern int phyxmi, phyxma, phyymi, phyyma;
  482. Xextern int nsubx,  nsuby, cursub;
  483. Xextern int umx,    umy;
  484. Xextern int font,   colour, style;
  485. Xextern int mark[], space[], nms, timecnt;
  486. Xextern int alarm,  pendn,  curel;
  487. Xextern int level;
  488. X
  489. Xextern int *heap3;
  490. Xextern int *heapc;
  491. X
  492. Xextern float spdxmi, spdxma, spdymi, spdyma;
  493. Xextern float vpdxmi, vpdxma, vpdymi, vpdyma;
  494. Xextern float vpwxmi, vpwxma, vpwymi, vpwyma;
  495. Xextern float xpmm,   ypmm;
  496. Xextern float wpxscl, wpxoff, wpyscl, wpyoff;
  497. Xextern float dpxscl, dpxoff, dpyscl, dpyoff;
  498. Xextern float mpxscl, mpxoff, mpyscl, mpyoff;
  499. Xextern float wmxscl, wmxoff, wmyscl, wmyoff;
  500. Xextern float chrdef, chrht;
  501. Xextern float symdef, symht;
  502. Xextern float majdef, majht;
  503. Xextern float mindef, minht;
  504. Xextern float base3x, base3y, basecx, basecy;
  505. Xextern float domxmi, domxma, domymi, domyma;
  506. Xextern float zzscl,  ranmi,  ranma;
  507. Xextern float cxx,    cxy,    cyx,    cyy,   cyz;
  508. SHAR_EOF
  509. echo "extracting define.c"
  510. sed 's/^X//' << \SHAR_EOF > define.c
  511. X/*
  512. X* Global variables for C plotting package
  513. X*
  514. X* device  :  Graphics device number
  515. X* termin  :  Zero for noninteractive device, non-zero for terminal
  516. X* graphx  :  Zero if currently in text mode, non-zero for graphics mode
  517. X* currx   :  Physical x-coordinate of current point
  518. X* curry   :  Physical y-coordinate of current point
  519. X* vpp...  :  Viewport boundaries in physical coordinates
  520. X* spp...  :  Subpage  boundaries in physical coordinates
  521. X* clp...  :  Clip     boundaries in physical coordinates
  522. X* phy...  :  Physical device limits in physical coordinates
  523. X* nsub.   :  Number of subpages on physical device
  524. X* cursub  :  Current subpage
  525. X* um.     :  Number of micrometres in a pixel
  526. X* font    :  Current default font
  527. X* colour  :  Current default colour
  528. X* mark    :  Array of mark lengths in micrometres for broken lines
  529. X* space   :  Array of space lengths in micrometres for broken lines
  530. X* nms     :  Number of elements for current broken line style
  531. X* timecnt :  Timer for broken lines
  532. X* alarm   :  Alarm indicating change of broken line status
  533. X* pendn   :  Flag indicating if pen is up or down
  534. X* curel   :  Current element within broken line
  535. X* level   :  Initialization level
  536. X*
  537. X* spd...  :  Subpage  boundaries in normalized device coordinates
  538. X* vpd...  :  Viewport boundaries in normalized device coordinates
  539. X* vpw...  :  Viewport boundaries in world coordinates
  540. X* .pmm    :  Number of pixels to a millimetre
  541. X* wp....  :  Transformation variables for world  to physical conversion
  542. X* dp....  :  Transformation variables for device to physical conversion
  543. X* mp....  :  Transformation variables for millimetres from bottom left
  544. X*             hand corner to physical coordinates
  545. X* wm....  :  Transformation variables for world coordinates to mm
  546. X* chr...  :  Character default height and current (scaled) height
  547. X* sym...  :  Symbol    default height and current (scaled) height
  548. X* maj...  :  Major tick default height and current (scaled) height
  549. X* min...  :  Minor tick default height and current (scaled) height
  550. X* base3.  :  World coordinate size of base for 3-d plot
  551. X* basec.  :  Position of centre of base for 3-d plot
  552. X* dom...  :  Minimum and maximum values for domain
  553. X* zzscl   :  Vertical (z) scale for 3-d plot
  554. X* ran..   :  Minimum and maximum z values for 3-d plot
  555. X* c..     :  Coordinate transformation from 3-d to 2-d
  556. X*/
  557. X
  558. X#include <stdio.h>  /* Just for NULL definition */
  559. X
  560. Xint device, termin, graphx;
  561. Xint currx,  curry;
  562. Xint vppxmi, vppxma, vppymi, vppyma;
  563. Xint sppxmi, sppxma, sppymi, sppyma;
  564. Xint clpxmi, clpxma, clpymi, clpyma;
  565. Xint phyxmi, phyxma, phyymi, phyyma;
  566. Xint nsubx,  nsuby, cursub;
  567. Xint umx,    umy;
  568. Xint font,   colour, style;
  569. Xint mark[10], space[10], nms, timecnt;
  570. Xint alarm,  pendn,  curel;
  571. Xint level=0;
  572. X
  573. Xint *heap3=NULL;
  574. Xint *heapc=NULL;
  575. X
  576. Xfloat spdxmi, spdxma, spdymi, spdyma;
  577. Xfloat vpdxmi, vpdxma, vpdymi, vpdyma;
  578. Xfloat vpwxmi, vpwxma, vpwymi, vpwyma;
  579. Xfloat xpmm,   ypmm;
  580. Xfloat wpxscl, wpxoff, wpyscl, wpyoff;
  581. Xfloat dpxscl, dpxoff, dpyscl, dpyoff;
  582. Xfloat mpxscl, mpxoff, mpyscl, mpyoff;
  583. Xfloat wmxscl, wmxoff, wmyscl, wmyoff;
  584. Xfloat chrdef, chrht;
  585. Xfloat symdef, symht;
  586. Xfloat majdef, majht;
  587. Xfloat mindef, minht;
  588. Xfloat base3x, base3y, basecx, basecy;
  589. Xfloat domxmi, domxma, domymi, domyma;
  590. Xfloat zzscl,  ranmi,  ranma;
  591. Xfloat cxx,    cxy,    cyx,    cyy,   cyz;
  592. SHAR_EOF
  593. echo "extracting fatal.c"
  594. sed 's/^X//' << \SHAR_EOF > fatal.c
  595. X#include "plplot.h"
  596. X
  597. Xvoid fatal(text)
  598. Xchar *text;
  599. X{
  600. X      plend();
  601. X      printf("\nERROR - PLPLOT: %s",text);
  602. X      exit(1);
  603. X}
  604. SHAR_EOF
  605. echo "extracting fcnvrt.c"
  606. sed 's/^X//' << \SHAR_EOF > fcnvrt.c
  607. X/* Coordinate transformations for plotting package */
  608. X
  609. X#include "plplot.h"
  610. X#include "declare.h"
  611. X#include <math.h>
  612. X
  613. X/* dcmm. converts from device coordinates to millimetres from bottom */
  614. X/* left-hand corner */
  615. X
  616. Xfloat dcmmx(x)
  617. Xfloat x;
  618. X{
  619. X      return((float)(x * abs(phyxma-phyxmi) / xpmm));
  620. X}
  621. X
  622. Xfloat dcmmy(y)
  623. Xfloat y;
  624. X{
  625. X      return((float)(y * abs(phyyma-phyymi) / ypmm));
  626. X}
  627. X
  628. X/* dcsc. define transformations between device coordinates and subpage */
  629. X/* coordinates */
  630. X
  631. Xfloat dcscx(x)
  632. Xfloat x;
  633. X{
  634. X      return((float)((x - spdxmi)/(spdxma-spdxmi)));
  635. X}
  636. X
  637. Xfloat dcscy(y)
  638. Xfloat y;
  639. X{
  640. X      return((float)((y - spdymi)/(spdyma-spdymi)));
  641. X}
  642. X
  643. X/* mmdc. converts millimetres from bottom left corner into device */
  644. X/* coordinates */
  645. X
  646. Xfloat mmdcx(x)
  647. Xfloat x;
  648. X{
  649. X      return((float)(x * xpmm / abs(phyxma - phyxmi)));
  650. X}
  651. X
  652. Xfloat mmdcy(y)
  653. Xfloat y;
  654. X{
  655. X      return((float)(y * ypmm / abs(phyyma - phyymi)));
  656. X}
  657. X
  658. X/* scdc. converts subpage coordinates to device coordinates */
  659. X
  660. Xfloat scdcx(x)
  661. Xfloat x;
  662. X{
  663. X      return((float)(spdxmi + (spdxma-spdxmi) * x));
  664. X}
  665. X
  666. Xfloat scdcy(y)
  667. Xfloat y;
  668. X{
  669. X      return((float)(spdymi + (spdyma-spdymi) * y));
  670. X}
  671. X
  672. X/* wcmm. converts world coordinates into millimetres */
  673. X
  674. Xfloat wcmmx(x)
  675. Xfloat x;
  676. X{
  677. X      return((float)(wmxoff + wmxscl*x));
  678. X}
  679. X
  680. Xfloat wcmmy(y)
  681. Xfloat y;
  682. X{
  683. X      return((float)(wmyoff + wmyscl*y));
  684. X}
  685. X
  686. Xfloat w3wcx(x,y,z)
  687. Xfloat x, y, z;
  688. X{
  689. X      return((float)((x-basecx)*cxx + (y-basecy)*cxy));
  690. X}
  691. X
  692. Xfloat w3wcy(x,y,z)
  693. Xfloat x, y, z;
  694. X{
  695. X      return((float)((x-basecx)*cyx+(y-basecy)*cyy+(z-ranmi)*cyz));
  696. X}
  697. X
  698. X
  699. SHAR_EOF
  700. echo "extracting font01.c"
  701. sed 's/^X//' << \SHAR_EOF > font01.c
  702. X/*      integer findex(3000)  */
  703. X/*      integer*2 buffer(27000)  */
  704. X/*      integer*2 hersh(0:175,4)  */
  705. X
  706. X/*      common /hersh1/ findex  */
  707. X/*      common /hersh2/ buffer  */
  708. X/*      common /hersh3/ hersh  */
  709. X
  710. X extern int 
  711. X   subindex00[], subindex01[], subindex02[], subindex03[], subindex04[],
  712. X   subindex05[], subindex06[], subindex07[], subindex08[], subindex09[],
  713. X   subindex10[], subindex11[], subindex12[], subindex13[], subindex14[],
  714. X   subindex15[], subindex16[], subindex17[], subindex18[], subindex19[],
  715. X   subindex20[], subindex21[], subindex22[], subindex23[], subindex24[],
  716. X   subindex25[], subindex26[], subindex27[], subindex28[], subindex29[];
  717. X
  718. X int *findex[30] = {
  719. X   subindex00, subindex01, subindex02, subindex03, subindex04,
  720. X   subindex05, subindex06, subindex07, subindex08, subindex09,
  721. X   subindex10, subindex11, subindex12, subindex13, subindex14,
  722. X   subindex15, subindex16, subindex17, subindex18, subindex19,
  723. X   subindex20, subindex21, subindex22, subindex23, subindex24,
  724. X   subindex25, subindex26, subindex27, subindex28, subindex29
  725. X };
  726. X
  727. X extern short int 
  728. X   subbuffer000[],subbuffer001[],subbuffer002[],subbuffer003[],
  729. X   subbuffer004[],subbuffer005[],subbuffer006[],subbuffer007[],
  730. X   subbuffer008[],subbuffer009[],subbuffer010[],subbuffer011[],
  731. X   subbuffer012[],subbuffer013[],subbuffer014[],subbuffer015[],
  732. X   subbuffer016[],subbuffer017[],subbuffer018[],subbuffer019[],
  733. X   subbuffer020[],subbuffer021[],subbuffer022[],subbuffer023[],
  734. X   subbuffer024[],subbuffer025[],subbuffer026[],subbuffer027[],
  735. X   subbuffer028[],subbuffer029[],subbuffer030[],subbuffer031[],
  736. X   subbuffer032[],subbuffer033[],subbuffer034[],subbuffer035[],
  737. X   subbuffer036[],subbuffer037[],subbuffer038[],subbuffer039[],
  738. X   subbuffer040[],subbuffer041[],subbuffer042[],subbuffer043[],
  739. X   subbuffer044[],subbuffer045[],subbuffer046[],subbuffer047[],
  740. X   subbuffer048[],subbuffer049[],subbuffer050[],subbuffer051[],
  741. X   subbuffer052[],subbuffer053[],subbuffer054[],subbuffer055[],
  742. X   subbuffer056[],subbuffer057[],subbuffer058[],subbuffer059[],
  743. X   subbuffer060[],subbuffer061[],subbuffer062[],subbuffer063[],
  744. X   subbuffer064[],subbuffer065[],subbuffer066[],subbuffer067[],
  745. X   subbuffer068[],subbuffer069[],subbuffer070[],subbuffer071[],
  746. X   subbuffer072[],subbuffer073[],subbuffer074[],subbuffer075[],
  747. X   subbuffer076[],subbuffer077[],subbuffer078[],subbuffer079[],
  748. X   subbuffer080[],subbuffer081[],subbuffer082[],subbuffer083[],
  749. X   subbuffer084[],subbuffer085[],subbuffer086[],subbuffer087[],
  750. X   subbuffer088[],subbuffer089[],subbuffer090[],subbuffer091[],
  751. X   subbuffer092[],subbuffer093[],subbuffer094[],subbuffer095[],
  752. X   subbuffer096[],subbuffer097[],subbuffer098[],subbuffer099[],
  753. X   subbuffer100[],subbuffer101[],subbuffer102[],subbuffer103[],
  754. X   subbuffer104[],subbuffer105[],subbuffer106[],subbuffer107[],
  755. X   subbuffer108[],subbuffer109[],subbuffer110[],subbuffer111[],
  756. X   subbuffer112[],subbuffer113[],subbuffer114[],subbuffer115[],
  757. X   subbuffer116[],subbuffer117[],subbuffer118[],subbuffer119[],
  758. X   subbuffer120[],subbuffer121[],subbuffer122[],subbuffer123[],
  759. X   subbuffer124[],subbuffer125[],subbuffer126[],subbuffer127[],
  760. X   subbuffer128[],subbuffer129[],subbuffer130[],subbuffer131[],
  761. X   subbuffer132[],subbuffer133[],subbuffer134[],subbuffer135[],
  762. X   subbuffer136[],subbuffer137[],subbuffer138[],subbuffer139[],
  763. X   subbuffer140[],subbuffer141[],subbuffer142[],subbuffer143[],
  764. X   subbuffer144[],subbuffer145[],subbuffer146[],subbuffer147[],
  765. X   subbuffer148[],subbuffer149[],subbuffer150[],subbuffer151[],
  766. X   subbuffer152[],subbuffer153[],subbuffer154[],subbuffer155[],
  767. X   subbuffer156[],subbuffer157[],subbuffer158[],subbuffer159[],
  768. X   subbuffer160[],subbuffer161[],subbuffer162[],subbuffer163[],
  769. X   subbuffer164[],subbuffer165[],subbuffer166[],subbuffer167[],
  770. X   subbuffer168[],subbuffer169[],subbuffer170[],subbuffer171[],
  771. X   subbuffer172[],subbuffer173[],subbuffer174[],subbuffer175[],
  772. X   subbuffer176[],subbuffer177[],subbuffer178[],subbuffer179[],
  773. X   subbuffer180[],subbuffer181[],subbuffer182[],subbuffer183[],
  774. X   subbuffer184[],subbuffer185[],subbuffer186[],subbuffer187[],
  775. X   subbuffer188[],subbuffer189[],subbuffer190[],subbuffer191[],
  776. X   subbuffer192[],subbuffer193[],subbuffer194[],subbuffer195[],
  777. X   subbuffer196[],subbuffer197[],subbuffer198[],subbuffer199[],
  778. X   subbuffer200[],subbuffer201[],subbuffer202[],subbuffer203[],
  779. X   subbuffer204[],subbuffer205[],subbuffer206[],subbuffer207[],
  780. X   subbuffer208[],subbuffer209[],subbuffer210[],subbuffer211[],
  781. X   subbuffer212[],subbuffer213[],subbuffer214[],subbuffer215[],
  782. X   subbuffer216[],subbuffer217[],subbuffer218[],subbuffer219[],
  783. X   subbuffer220[],subbuffer221[],subbuffer222[],subbuffer223[],
  784. X   subbuffer224[],subbuffer225[],subbuffer226[],subbuffer227[],
  785. X   subbuffer228[],subbuffer229[],subbuffer230[],subbuffer231[],
  786. X   subbuffer232[],subbuffer233[],subbuffer234[],subbuffer235[],
  787. X   subbuffer236[],subbuffer237[],subbuffer238[],subbuffer239[],
  788. X   subbuffer240[],subbuffer241[],subbuffer242[],subbuffer243[],
  789. X   subbuffer244[],subbuffer245[],subbuffer246[],subbuffer247[],
  790. X   subbuffer248[],subbuffer249[],subbuffer250[],subbuffer251[],
  791. X   subbuffer252[],subbuffer253[],subbuffer254[],subbuffer255[],
  792. X   subbuffer256[],subbuffer257[],subbuffer258[],subbuffer259[],
  793. X   subbuffer260[],subbuffer261[],subbuffer262[],subbuffer263[],
  794. X   subbuffer264[],subbuffer265[],subbuffer266[],subbuffer267[],
  795. X   subbuffer268[],subbuffer269[];
  796. X   
  797. X short int *buffer[270] = {
  798. X    subbuffer000, subbuffer001, subbuffer002, subbuffer003, subbuffer004,
  799. X    subbuffer005, subbuffer006, subbuffer007, subbuffer008, subbuffer009,
  800. X    subbuffer010, subbuffer011, subbuffer012, subbuffer013, subbuffer014,
  801. X    subbuffer015, subbuffer016, subbuffer017, subbuffer018, subbuffer019,
  802. X    subbuffer020, subbuffer021, subbuffer022, subbuffer023, subbuffer024,
  803. X    subbuffer025, subbuffer026, subbuffer027, subbuffer028, subbuffer029,
  804. X    subbuffer030, subbuffer031, subbuffer032, subbuffer033, subbuffer034,
  805. X    subbuffer035, subbuffer036, subbuffer037, subbuffer038, subbuffer039,
  806. X    subbuffer040, subbuffer041, subbuffer042, subbuffer043, subbuffer044,
  807. X    subbuffer045, subbuffer046, subbuffer047, subbuffer048, subbuffer049,
  808. X    subbuffer050, subbuffer051, subbuffer052, subbuffer053, subbuffer054,
  809. X    subbuffer055, subbuffer056, subbuffer057, subbuffer058, subbuffer059,
  810. X    subbuffer060, subbuffer061, subbuffer062, subbuffer063, subbuffer064,
  811. X    subbuffer065, subbuffer066, subbuffer067, subbuffer068, subbuffer069,
  812. X    subbuffer070, subbuffer071, subbuffer072, subbuffer073, subbuffer074,
  813. X    subbuffer075, subbuffer076, subbuffer077, subbuffer078, subbuffer079,
  814. X    subbuffer080, subbuffer081, subbuffer082, subbuffer083, subbuffer084,
  815. X    subbuffer085, subbuffer086, subbuffer087, subbuffer088, subbuffer089,
  816. X    subbuffer090, subbuffer091, subbuffer092, subbuffer093, subbuffer094,
  817. X    subbuffer095, subbuffer096, subbuffer097, subbuffer098, subbuffer099,
  818. X    subbuffer100, subbuffer101, subbuffer102, subbuffer103, subbuffer104,
  819. X    subbuffer105, subbuffer106, subbuffer107, subbuffer108, subbuffer109,
  820. X    subbuffer110, subbuffer111, subbuffer112, subbuffer113, subbuffer114,
  821. X    subbuffer115, subbuffer116, subbuffer117, subbuffer118, subbuffer119,
  822. X    subbuffer120, subbuffer121, subbuffer122, subbuffer123, subbuffer124,
  823. X    subbuffer125, subbuffer126, subbuffer127, subbuffer128, subbuffer129,
  824. X    subbuffer130, subbuffer131, subbuffer132, subbuffer133, subbuffer134,
  825. X    subbuffer135, subbuffer136, subbuffer137, subbuffer138, subbuffer139,
  826. X    subbuffer140, subbuffer141, subbuffer142, subbuffer143, subbuffer144,
  827. X    subbuffer145, subbuffer146, subbuffer147, subbuffer148, subbuffer149,
  828. X    subbuffer150, subbuffer151, subbuffer152, subbuffer153, subbuffer154,
  829. X    subbuffer155, subbuffer156, subbuffer157, subbuffer158, subbuffer159,
  830. X    subbuffer160, subbuffer161, subbuffer162, subbuffer163, subbuffer164,
  831. X    subbuffer165, subbuffer166, subbuffer167, subbuffer168, subbuffer169,
  832. X    subbuffer170, subbuffer171, subbuffer172, subbuffer173, subbuffer174,
  833. X    subbuffer175, subbuffer176, subbuffer177, subbuffer178, subbuffer179,
  834. X    subbuffer180, subbuffer181, subbuffer182, subbuffer183, subbuffer184,
  835. X    subbuffer185, subbuffer186, subbuffer187, subbuffer188, subbuffer189,
  836. X    subbuffer190, subbuffer191, subbuffer192, subbuffer193, subbuffer194,
  837. X    subbuffer195, subbuffer196, subbuffer197, subbuffer198, subbuffer199,
  838. X    subbuffer200, subbuffer201, subbuffer202, subbuffer203, subbuffer204,
  839. X    subbuffer205, subbuffer206, subbuffer207, subbuffer208, subbuffer209,
  840. X    subbuffer210, subbuffer211, subbuffer212, subbuffer213, subbuffer214,
  841. X    subbuffer215, subbuffer216, subbuffer217, subbuffer218, subbuffer219,
  842. X    subbuffer220, subbuffer221, subbuffer222, subbuffer223, subbuffer224,
  843. X    subbuffer225, subbuffer226, subbuffer227, subbuffer228, subbuffer229,
  844. X    subbuffer230, subbuffer231, subbuffer232, subbuffer233, subbuffer234,
  845. X    subbuffer235, subbuffer236, subbuffer237, subbuffer238, subbuffer239,
  846. X    subbuffer240, subbuffer241, subbuffer242, subbuffer243, subbuffer244,
  847. X    subbuffer245, subbuffer246, subbuffer247, subbuffer248, subbuffer249,
  848. X    subbuffer250, subbuffer251, subbuffer252, subbuffer253, subbuffer254,
  849. X    subbuffer255, subbuffer256, subbuffer257, subbuffer258, subbuffer259,
  850. X    subbuffer260, subbuffer261, subbuffer262, subbuffer263, subbuffer264,
  851. X    subbuffer265, subbuffer266, subbuffer267, subbuffer268, subbuffer269
  852. X };
  853. X
  854. X extern short int 
  855. X    subhersh0[],subhersh1[],subhersh2[],subhersh3[];
  856. X
  857. X short int *hersh[4] = {
  858. X    subhersh0, subhersh1, subhersh2, subhersh3
  859. X };
  860. X
  861. X int subindex00[100] = {
  862. X    1,   13,   32,   46,   61,   76,   88,  106,  118,  124,
  863. X  134,  146,  155,  170,  182,  199,  212,  232,  248,  264,
  864. X  273,  285,  294,  309,  318,  328,  340,  352,  371,  380,
  865. X  392,  407,  419,  431,  454,  460,  472,  481,  496,  508,
  866. X  523,  540,  552,  565,  578,  587,  605,  621,  630,  645,
  867. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  868. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  869. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  870. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  871. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  872. X };
  873. X int subindex01[100] = {
  874. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  875. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  876. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  877. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  878. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  879. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  880. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  881. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  882. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  883. X    0,    0,    0,    0,    0,    0,  661,  666,  671,  676
  884. X };
  885. X int subindex02[100] = {
  886. X  691,  698,  710,  728,  738,  755,  772,  781,  803,  820,
  887. X  829,  839,  854,  870,  885,  905,  911,  920,  933,  952,
  888. X  958,  968,  978,  984,  990,  999, 1008, 1017, 1029, 1038,
  889. X 1048, 1058, 1068, 1083, 1107, 1130,    0, 1154, 1169, 1204,
  890. X    0, 1210,    0,    0,    0,    0,    0, 1219,    0, 1266,
  891. X    0, 1297,    0, 1308,    0, 1317,    0, 1349, 1355,    0,
  892. X 1364, 1415, 1470, 1522, 1589, 1669, 1765, 1855, 1934, 2009,
  893. X 2038, 2096, 2138, 2200, 2249, 2264,    0, 2285, 2311, 2337,
  894. X 2356, 2375,    0, 2394,    0,    0,    0,    0,    0,    0,
  895. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  896. X };
  897. X int subindex03[100] = {
  898. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  899. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  900. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  901. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  902. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  903. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  904. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  905. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  906. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  907. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  908. X };
  909. X int subindex04[100] = {
  910. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  911. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  912. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  913. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  914. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  915. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  916. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  917. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  918. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  919. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  920. X };
  921. X int subindex05[100] = {
  922. X 2406, 2418, 2445, 2467, 2486, 2501, 2513, 2539, 2551, 2557,
  923. X 2571, 2583, 2592, 2607, 2619, 2644, 2661, 2689, 2709, 2733,
  924. X 2742, 2756, 2765, 2780, 2789, 2799, 2811, 2823, 2850, 2859,
  925. X 2871, 2886, 2898, 2910, 2938, 2944, 2956, 2965, 2980, 2992,
  926. X 3004, 3029, 3041, 3058, 3071, 3080, 3102, 3126, 3135, 3156,
  927. X 3176, 3199, 3243, 3270, 3308, 3339, 3370, 3402, 3443, 3471,
  928. X 3499, 3541, 3573, 3621, 3656, 3688, 3722, 3757, 3798, 3829,
  929. X 3857, 3893, 3928, 3956, 3995, 4036,    0,    0,    0,    0,
  930. X    0,    0, 4079,    0,    0,    0,    0,    0,    0,    0,
  931. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  932. X };
  933. X int subindex06[100] = {
  934. X 4091, 4112, 4133, 4151, 4172, 4193, 4205, 4231, 4245, 4257,
  935. X 4272, 4284, 4290, 4312, 4326, 4347, 4368, 4389, 4401, 4422,
  936. X 4434, 4448, 4457, 4472, 4481, 4494, 4506, 4533, 4567, 4587,
  937. X 4614, 4636, 4662, 4684, 4714, 4726, 4748, 4760, 4784, 4801,
  938. X 4833, 4854, 4870, 4892, 4913, 4924, 4943, 4967, 4984, 5007,
  939. X 5033, 5058, 5084, 5101, 5128, 5148, 5175, 5206, 5238, 5257,
  940. X 5280, 5316, 5337, 5373, 5399, 5425, 5452, 5482, 5500, 5519,
  941. X 5538, 5560, 5580, 5608, 5631, 5657, 5683,    0,    0,    0,
  942. X    0,    0, 5708, 5737, 5756, 5782, 5806,    0,    0,    0,
  943. X    0,    0,    0,    0,    0,    0, 5825, 5830, 5835, 5840
  944. X };
  945. X int subindex07[100] = {
  946. X 5861, 5869, 5887, 5906, 5916, 5937, 5964, 5973, 6006, 6033,
  947. X 6042, 6054, 6069, 6087, 6099, 6123, 6129, 6138, 6155, 6185,
  948. X 6191, 6205, 6219, 6225, 6231, 6240, 6249, 6258, 6270, 6279,
  949. X 6290, 6301, 6313, 6328, 6366,    0, 6397, 6406, 6415, 6422,
  950. X 6443, 6479, 6508, 6531, 6582, 6640,    0,    0,    0, 6698,
  951. X 6719, 6738, 6750, 6781, 6810, 6827, 6840, 6854, 6870, 6884,
  952. X 6894, 6903, 6913, 6923, 6947, 6971, 7005, 7030,    0,    0,
  953. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  954. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  955. X    0,    0,    0,    0,    0, 7063, 7069, 7075, 7081, 7087
  956. X };
  957. X int subindex08[100] = {
  958. X 7093, 7099, 7105, 7111, 7117, 7123, 7129, 7135, 7141, 7147,
  959. X 7158, 7169, 7180, 7191, 7203, 7215, 7227, 7239, 7247, 7255,
  960. X 7263, 7271, 7297, 7323, 7349, 7375, 7399, 7421, 7450, 7464,
  961. X 7476, 7484, 7493, 7505,    0,    0,    0,    0,    0, 7517,
  962. X 7538, 7547, 7555, 7564, 7579, 7588, 7597,    0,    0, 7609,
  963. X 7647, 7677, 7697, 7717, 7737, 7757, 7782,    0,    0, 7796,
  964. X 7812, 7826, 7843, 7864, 7888, 7902, 7919, 7954, 7967, 8004,
  965. X 8071, 8168, 8211, 8246,    0,    0,    0,    0,    0,    0,
  966. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  967. X    0,    0,    0,    0,    0,    0,    0,    0, 8264, 8273
  968. X };
  969. X int subindex09[100] = {
  970. X 8286, 8303, 8324, 8345, 8370, 8407, 8444, 8497, 8534, 8570,
  971. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  972. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  973. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  974. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  975. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  976. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  977. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  978. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  979. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  980. X };
  981. X int subindex10[100] = {
  982. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  983. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  984. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  985. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  986. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  987. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  988. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  989. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  990. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  991. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  992. X };
  993. X int subindex11[100] = {
  994. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  995. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  996. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  997. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  998. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  999. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1000. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1001. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1002. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1003. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1004. X };
  1005. X int subindex12[100] = {
  1006. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1007. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1008. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1009. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1010. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1011. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1012. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1013. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1014. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1015. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1016. X };
  1017. X int subindex13[100] = {
  1018. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1019. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1020. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1021. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1022. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1023. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1024. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1025. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1026. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1027. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1028. X };
  1029. X int subindex14[100] = {
  1030. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1031. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1032. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1033. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1034. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1035. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1036. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1037. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1038. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1039. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1040. X };
  1041. X int subindex15[100] = {
  1042. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1043. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1044. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1045. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1046. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1047. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1048. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1049. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1050. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1051. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1052. X };
  1053. X int subindex16[100] = {
  1054. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1055. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1056. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1057. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1058. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1059. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1060. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1061. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1062. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1063. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1064. X };
  1065. X int subindex17[100] = {
  1066. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1067. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1068. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1069. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1070. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1071. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1072. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1073. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1074. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1075. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1076. X };
  1077. X int subindex18[100] = {
  1078. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1079. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1080. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1081. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1082. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1083. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1084. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1085. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1086. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1087. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1088. X };
  1089. X int subindex19[100] = {
  1090. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1091. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1092. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1093. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1094. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1095. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1096. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1097. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1098. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1099. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1100. X };
  1101. X int subindex20[100] = {
  1102. X 8604, 8625, 8673, 8708, 8741, 8766, 8789, 8832, 8862, 8877,
  1103. X 8900, 8930, 8947, 8980, 9004, 9051, 9083, 9150, 9198, 9235,
  1104. X 9254, 9280, 9298, 9325, 9349, 9372, 9391, 9412, 9460, 9477,
  1105. X 9495, 9520, 9539, 9569, 9628, 9643, 9673, 9691, 9724, 9748,
  1106. X 9787, 9834, 9858, 9890, 9913, 9932, 9968,10019,10043,10087,
  1107. X10133,10154,10198,10235,10268,10293,10316,10361,10391,10406,
  1108. X10430,10460,10477,10510,10534,10579,10609,10673,10718,10756,
  1109. X10775,10803,10821,10848,10872,10895,10914,    0,    0,    0,
  1110. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1111. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1112. X };
  1113. X int subindex21[100] = {
  1114. X10963,11005,11041,11072,11111,11145,11170,11233,11264,11285,
  1115. X11313,11343,11358,11405,11436,11475,11514,11550,11576,11611,
  1116. X11630,11661,11679,11706,11730,11755,11774,11817,11877,11908,
  1117. X11955,11990,12024,12059,12106,12124,12156,12182,12213,12240,
  1118. X12288,12323,12348,12382,12420,12439,12473,12513,12539,12576,
  1119. X12623,12665,12704,12732,12777,12806,12844,12890,12924,12953,
  1120. X12988,13025,13046,13101,13141,13176,13221,13257,13286,13317,
  1121. X13338,13378,13407,13451,13496,13540,13574,13620,13656,13694,
  1122. X13751,13810,    0,13825,13853,13899,13944,    0,    0,13974,
  1123. X14022,14094,14149,14206,14295,14386,14409,14414,14419,14424
  1124. X };
  1125. X int subindex22[100] = {
  1126. X14467,14481,14529,14579,14595,14637,14688,14722,14788,14839,
  1127. X14848,14859,14874,14891,14909,14944,14953,14968,14985,14997,
  1128. X15003,15026,15049,15064,15079,15108,15137,15144,15151,15157,
  1129. X15166,15172,15181,15193,15205,15214,15223,15241,15250,15262,
  1130. X15274,15281,15288,15301,15314,15338,15365,15376,15386,15396,
  1131. X15417,15428,15439,15450,15461,15474,15490,15506,15522,15538,
  1132. X15557,15571,15585,15599,15613,15660,15678,15691,15726,15779,
  1133. X15808,15843,15895,15954,15999,16014,16063,16096,16155,    0,
  1134. X16170,16211,16259,16289,16320,16354,16385,16418,16465,16505,
  1135. X16539,16566,16596,16611,16662,16713,16729,16745,16761,    0
  1136. X };
  1137. X int subindex23[100] = {
  1138. X16777,16820,16874,16907,16958,17009,17060,17104,17137,17173,
  1139. X17209,17248,    0,    0,    0,    0,17299,17314,17335,17356,
  1140. X17395,17434,17471,17492,17513,17541,17562,17583,17635,17664,
  1141. X17753,17859,    0,    0,    0,    0,    0,    0,    0,    0,
  1142. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1143. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1144. X    0,    0,    0,    0,    0,    0,17892,17907,17928,17949,
  1145. X17984,18023,18060,18081,18102,18130,18151,18172,18211,18240,
  1146. X18329,18421,    0,    0,    0,    0,    0,    0,    0,    0,
  1147. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1148. X };
  1149. X int subindex24[100] = {
  1150. X18509,18533,18559,18590,18621,18638,18655,18696,18737,18772,
  1151. X18807,18824,    0,    0,    0,    0,    0,    0,    0,    0,
  1152. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1153. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1154. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1155. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1156. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1157. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1158. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1159. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1160. X };
  1161. X int subindex25[100] = {
  1162. X18884,18907,18954,18995,19030,19060,19084,19131,19156,19167,
  1163. X19190,19215,19232,19261,19284,19327,19357,19408,19445,19491,
  1164. X19509,19536,19553,19582,19601,19621,    0,    0,    0,    0,
  1165. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1166. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1167. X19644,19685,19758,19802,19848,19900,19949,20005,20063,20099,
  1168. X20136,20198,20241,20293,20334,20371,20427,20473,20541,20580,
  1169. X20621,20663,20702,20746,20801,20846,    0,    0,    0,    0,
  1170. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1171. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1172. X };
  1173. X int subindex26[100] = {
  1174. X20893,20932,20971,21006,21045,21084,21111,21162,21190,21217,
  1175. X21244,21269,21280,21325,21353,21392,21431,21470,21494,21547,
  1176. X21566,21594,21611,21640,21659,21679,    0,    0,    0,    0,
  1177. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1178. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1179. X21702,21738,21764,21789,21825,21851,21881,21922,21955,21977,
  1180. X22004,22038,22058,22106,22141,22173,22206,22244,22271,22296,
  1181. X22319,22349,22375,22414,22459,22494,    0,    0,    0,    0,
  1182. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1183. X    0,    0,    0,    0,    0,    0,22535,22540,22545,22550
  1184. X };
  1185. X int subindex27[100] = {
  1186. X22595,22610,22647,22698,22719,22775,22840,22855,22926,22991,
  1187. X23010,23037,23072,23115,23142,23203,23230,23257,23331,23385,
  1188. X23396,23423,23450,23492,23503,23522,23541,23555,23580,    0,
  1189. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1190. X    0,    0,    0,    0,    0,    0,23613,23618,23623,23628,
  1191. X23673,23691,23736,23789,23802,23844,23893,23926,23992,24041,
  1192. X24050,24061,24075,24092,24112,24149,24160,24171,24229,24273,
  1193. X24279,24302,24325,24337,24343,24352,24361,24370,24385,    0,
  1194. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1195. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1196. X };
  1197. X int subindex28[100] = {
  1198. X24402,24423,24457,24505,24522,24556,24581,24655,24703,24733,
  1199. X24773,24819,24847,24880,24910,24957,24981,25013,25048,25067,
  1200. X25094,25145,25169,25199,25230,25263,25302,25336,25380,25412,
  1201. X25454,25516,    0,    0,    0,    0,    0,    0,    0,    0,
  1202. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1203. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1204. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1205. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1206. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1207. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1208. X };
  1209. X int subindex29[100] = {
  1210. X25564,25606,25657,25697,25714,25739,25773,25835,25880,25910,
  1211. X25950,25991,26016,26049,26079,26118,26142,26181,26212,26231,
  1212. X26256,26311,26335,26361,26392,26425,26460,26490,26530,26558,
  1213. X26595,26649,    0,    0,    0,    0,    0,    0,    0,    0,
  1214. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1215. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1216. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1217. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1218. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1219. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1220. X };
  1221. X
  1222. X short int subbuffer000[100] = {
  1223. X   -4, 7749, 7621, 8261, 7740,   64, 8261, 8764,   64, 7999,
  1224. X 8511,    0,   -4, 7749, 7621, 7877, 7868,   64, 7877, 8389,
  1225. X 8644, 8642, 8385,   64, 7873, 8385, 8640, 8637, 8380, 7868,
  1226. X    0,   -4, 7749, 7622, 8772, 8517, 8261, 8004, 7874, 7871,
  1227. X 7997, 8252, 8508, 8765,    0,   -4, 7749, 7621, 7877, 7868,
  1228. X   64, 7877, 8261, 8516, 8642, 8639, 8509, 8252, 7868,    0,
  1229. X   -4, 7749, 7621, 7877, 7868,   64, 7877, 8645,   64, 7873,
  1230. X 8385,   64, 7868, 8636,    0,   -4, 7749, 7620, 7877, 7868,
  1231. X   64, 7877, 8645,   64, 7873, 8385,    0,   -4, 7749, 7622,
  1232. X 8772, 8517, 8261, 8004, 7874, 7871, 7997, 8252, 8508, 8765
  1233. X };
  1234. X short int subbuffer001[100] = {
  1235. X 8768,   64, 8384, 8768,    0,   -4, 7749, 7621, 7877, 7868,
  1236. X   64, 8645, 8636,   64, 7873, 8641,    0,   -4, 7749, 8002,
  1237. X 8261, 8252,    0,   -4, 7749, 7747, 8389, 8382, 8252, 7996,
  1238. X 7870, 7871,    0,   -4, 7749, 7621, 7877, 7868,   64, 8645,
  1239. X 7871,   64, 8129, 8636,    0,   -4, 7749, 7620, 7877, 7868,
  1240. X   64, 7868, 8636,    0,   -4, 7749, 7494, 7749, 7740,   64,
  1241. X 7749, 8252,   64, 8773, 8252,   64, 8773, 8764,    0,   -4,
  1242. X 7749, 7621, 7877, 7868,   64, 7877, 8636,   64, 8645, 8636,
  1243. X    0,   -4, 7749, 7622, 8261, 8004, 7874, 7871, 7997, 8252,
  1244. X 8380, 8637, 8767, 8770, 8644, 8389, 8261,    0,   -4, 7749
  1245. X };
  1246. SHAR_EOF
  1247. echo "End of archive 1 (of 7)"
  1248. # if you want to concatenate archives, remove anything after this line
  1249. exit
  1250.